package com.candy.th7;

/**
 * @author donglin
 * @Title:
 * @类名: Kitchen
 * @date 2020/7/22
 */
public class Kitchen {
    //声明属性：食物，初始值为0
    private int food=0;
    public synchronized void do_cock() throws InterruptedException{
        if(food==1){
            //当FOOD是1的时候 说明有食物 这时妈妈不用做饭
            //等孩子把饭吃完了 food=0时再开始做饭
            this.wait();
        }else{
            System.out.println(Thread.currentThread().getName()+"正在做饭。。。。。");
            Thread.sleep(2000);
            //饭做好了   食物数量+1
            food++;

            System.out.println("饭做好了。。。快来吃饭"+food);
            //唤醒其它线程吃饭

            this.notifyAll();
        }
    }
    public synchronized void do_eat() throws InterruptedException{
        if(food==0){
            //当食物为0是，说明没有食物可以吃，孩子们需要等待
            this.wait();
        }else{
            //吃饭的只能是孩子们。所以调用该方法的当前线程为孩子
            Child c=(Child) Thread.currentThread();
            System.out.println(Thread.currentThread().getName()+"抢到食物了，正在吃饭。。。");
            Thread.sleep(1000);
            //吃饭结束后食物数量减1
            food--;
            //吃饭结束后体力值+1
            c.setHp(c.getHp()+1);
            System.out.println(c.getName()+"目前的体力值是："+c.getHp());
            System.out.println("food............"+food);
            //吃饱后唤醒妈妈做饭
            this.notifyAll();
         }
    }
}

